﻿using System;
using System.Collections.Generic;
using System.Text;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

namespace codeCompiler
{
    /// <summary>
    /// Eine von <see cref="compilerBase"/> abgeleitete Klasse welche das Kompillieren von C# .Net Assemblies ermöglicht.
    /// </summary>
    public class CSharpCodeCompiler : compilerBase
    {
        /// <summary>
        /// Initialisiert eine neue Instanz des <see cref="CSharpCodeCompiler"/>.
        /// </summary>
        public CSharpCodeCompiler()
            : base()
        {
        }

        /// <summary>
        /// Kompilliert aus den angegebenen Daten ein .Net Assembly.
        /// </summary>
        public override void Compile()
        {
                CSharpCodeProvider csCodeProvider = new CSharpCodeProvider();
                CompilerParameters cpParameter = buildCompilerParameters();

                CompilerResults cr = csCodeProvider.CompileAssemblyFromSource(cpParameter, codeFiles.ToArray());
                onCompilerFinished(new compilerFinishedEventArgs(cr));
        }
    }
}
